Out-of-memory errors are a serious source of unreliability in embedded systems. This isbecause embedded systems typically do not have hard disks and hence, no swap-space and incase of an out-of-memory error the application simply crashes. Further, in most cases protectionfrom virtual memory is absent. Thus, the fact that a segment has exceeded its bound is not evendetected and no pre-crash remedial action is possible.This work improves reliability in two ways. First, it proposes a low-overhead scheme ofrun-time checks which enables detection of out-of-memory errors and hence, allows the designer toincorporate system-specific remedial action. Second, it proposes five techniques to grow the stackor heap, after it is out of memory, into previously un-utilized space such as dead variables andspace freed by compressing live variables. These techniques can avoid the out-of-memory error ifthe space recovered is enough to complete execution.
展开▼